package com.mmz.spring.aop.framework;

import org.aopalliance.aop.Advice;

import com.mmz.spring.aop.TargetSource;
import com.mmz.spring.aop.support.Advisor;


public interface Advised {
	
	boolean isProxyTargetClass();

	/**
	 * Return the interfaces proxied by the AOP proxy. Will not
	 * include the target class, which may also be proxied.
	 */
	Class<?>[] getProxiedInterfaces();

	/**
	 * Determine whether the given interface is proxied.
	 * @param intf the interface to check
	 */
	boolean isInterfaceProxied(Class<?> intf);


	/**
	 * Change the TargetSource used by this Advised object.
	 * Only works if the configuration isn't frozen.
	 * @param targetSource new TargetSource to use
	 */
	void setTargetSource(TargetSource targetSource);

	/**
	 * Return the TargetSource used by this Advised object.
	 */
	TargetSource getTargetSource();

	
	Advisor[] getAdvisors();

	
	void addAdvisor(Advisor advisor);

	
	
	


}
